PDA

View Full Version : مقاله در مورد نکات و اطلاعات کاربردی برنامه نویسی IOS



Todco.ir
دوشنبه 31 فروردین 1394, 10:31 صبح
با سلام.
از انجایی که مقالات فارسی نسبتا کمی در زمینه ای برنامه نویسی IOS مطرح میشود، این تاپیک را ایجاد کردم تا به ایجاد مقالات فارسی کاربردی در زمینه ای برنامه نویسی IOS بپردازیم.
تمامی نکات کاربردی در زمینه ای توسعه برنامه نویسی IOS را در اینجا مطرح میکنیم.

Todco.ir
سه شنبه 01 اردیبهشت 1394, 11:26 صبح
Visual Studio debug console for iPhone
پیشنهاد های معماری برای یکپارچه سازی برنامه های کاربردی موبایل و برنامه های دات نت.
این مقاله دو هدف اصلی دارد:
از دیدگاه معماری
از دیدگاه مهندسی نرم افزار
از دیدگاه معماری: برای نشان دادن رویکرد به ادغام برنامه های کاربردی (نرم افزار های ویندوزی) با گوشی های هوشمند و نرم افزار های تبلتی از طریق وب سوکتهای HTML5.
از دیدگاه مهندسی نرم افزار: برای نشان دادن و مفید واقع شدن ویژوال استادیو در اشکال زدایی از راه دور کنسول در اپل و توسعه دادن دستگاه های اندروید مورد بحث و استفاده قرار می گیرد.
درواقعه هدف این مقاله ارایه یک راه حل نهایی و جلابخش برای مشکلات نیست، تنها مفهومی از منابع و نحوه ای کاربرد برنامه ها می باشد، که برنامه های کاربری دات نت میتوانند از کتابخانه ای WPF استفاده کنند که ان می تواند استفاده بشود دورن هر کتابخانه ای UI که دیگر برنامه ها از آن استفاده می کنند.
دلیل ایجاد این مقاله:
چند وقت پیش که یک گوشی ایفون خریداری کردم، امیدوار بودم بتونم راه حلی برای اشگال زدایی برنامه ها کنسول نحت دات نتم پیدا کنم.
بنابراین شروع به جستجوی بهترین راه حل برای انجام این کار با معیار های زیر کردم.


اجتناب از یادگیری کامل زبان برنامه نویسی جدید مانند Objective C
اجتناب از توزیع برنامه های اپل به وسیله ای فروشگاه برنامه های اپل (AppStore)
استفاده از یک تکنیک ارتباطی فایروال دوستانه (Firewall-Friendly)
استفاده از یک کتابخانه ای ساده، ترجیحا با یک DLL

روند پژوهش بیش از حد طولانی نشد، HTML5 به نظر می رسید که بهترین انتخاب برای نوشتن یک برنامه بدون نیاز فرایند AppStore، پشتیبانی ساده IOS از دیگر ویژگی های HTML5 میباشد.
امدن امکان وب سوکتها در HTML5 نیاز فایروال دوستانه (Firewall-Friendly) را برطرف کرده است و نیز سازگاری مرورگر Safari در IOS تکمیل کننده نیاز ما می باشد.

معماری:
در سمت ویندوز، ابزار هسته تابعی مشتق شده از کلاس TraceListener می باشد. این کلاس مسئول به دام انداختن System.Diagnostics.Debug.Write () و WriteLine () تماس ها است و آن را به دستگاه کنترل از راه دور با استفاده از HTML5 WebSocket سرور ارسال می کند.
از سوی دیگر، ایفون پیاده سازی برنامه ای جاواسکریپت را با استفاده از WebSocket client انجام می دهد.
طراحی سطح بالا مشابه عکس زیر می باشد:
130507

Todco.ir
پنج شنبه 03 اردیبهشت 1394, 10:49 صبح
مراحل اجرایی:
در سمت ویندوز
وب سوکتها هنوز پشتیبانی بومی توسط دات نت نمی شوند (اما در حال حاضر این موضوع در .net freamwork 4.5 بیان شده است) پس از ارزیابی نیمی از کتابخانه های وب سوکتها در C#‎‎‎، که برای Alchemy ( به معنای لغتی کیمیاگری) می توانید به این ادرس مراجعه کنید (http://alchemywebsockets.net (http://alchemywebsockets.net/) ) که به دلیل سادگی و یکپارچگی اجرای DLL مورد استفاده قرار می گیرد.
یکی دیگر از ویژگی های مهم Alchemy ( به معنای لغتی کیمیاگری) حمایت چندین نسخه از پروتکل WebSocket است.
از انجا که این استاندارد کاملی نیست، بسیاری از نسخه های آن، بسته به نام تجاری مرورگر، نسخه و پلت فرم وجود دارد. نسخه های پشتیبانی hixie-76 (hybi00)، hybi-10، hybi-17 و RFC6455 هستند.
همانطور که قبلا هم اشاره کردیم، کلاس اصلی در سمت ویندوز TraceListener است که از کلاسی بنام WebSocketTraceListener مشتق شده است.
اجرای کوتاهی از این کلاس، به شرح زیر می باشد:
namespace System.Diagnostics
{
public class WebSocketTraceListener : TraceListener
{
private Alchemy.WebSocketServer server = new Alchemy.WebSocketServer();
private Alchemy.Classes.UserContext connection = null;

public void Initialize(System.Net.IPAddress ip, int port)
{
try
{
server.ListenAddress = ip;
server.Port = port;
server.OnConnect = OnConnect;
server.OnDisconnect = OnDisconnect;
server.Start();

Debug.WriteLine("WebSocket Trace Listener: An error ocurred when the application tried to start");
Debug.Listeners.Add(this);
}
catch (Exception)
{
Debug.WriteLine("WebSocket Trace Listener: Started correctly.");
}
}
public override void Write(string message)
{
if (this.connection != null)
this.connection.Send(message);
}
public override void WriteLine(string message)
{
if (this.connection != null)
this.connection.Send(message);
}

private void OnConnect(Alchemy.Classes.UserContext context)
{
if (this.connection != null)
this.server.Restart();
this.connection = context;
}
private void OnDisconnect(Alchemy.Classes.UserContext context)
{
this.connection = null;
}
}
}

این کلاس میتواند مستقیما روی برنامه شما تعبیه شود، بدون نیاز به نگه داشتن در یک DLL جداگانه.
دو وابستگی وجود دارد، از طریق: کتابخانه Alchemy (Alchemy.dll) و System.Web.dll، که نیاز به پروژه ای پیگربندی شده منظم با چارچوب .Net Framework به منظور ضمیمه کردن DLL.
در نهایت، در کلاس شنونده (listener class) می توانید این چند خط کد را اضافه کنید:
var listener = new WebSocketTraceListener();
listener.Initialize(IPAddress.Parse("192.168.0.101"), 81);
...
Debug.WriteLine("This is a debug line");
توجه کنید که ادرس IP متعلق به کامپیوتری است که در آن برنامه ای اشگال زدایی اجرا می شود و شماره پورت نباید توسط سیستم عامل و تنظیمات سخت افزاری دیوارآتش (Firewall) مسدود شده باشد ، 81 پورت خوبی است.
IP آدرس معمولا محلی است، که از آن انتظار می رود متصل شود به دستگاه موبایل داخل شبکه به منظور اشگال زدایی برنامه ای که در اینترنت در حال اجرا است، ممکن است تنظیمات بیشتری در روتر نیاز باشد.
مدلی از برنامه WPF ایجاد شده است برای ارسال متن های اشگال زدایی شده با توجه به تعامل با کاربر:

130565

Todco.ir
سه شنبه 08 اردیبهشت 1394, 11:59 صبح
در سمت تلفن همراه:
در دستگاه تلفن همراه، کار با منابع کد خیلی راحت تر است، از یک شی بومی WebSocket می توان به راحتی استفاده کرد، مانند قالب زیر:
var socket;

function Initialize(address) {
socket = new WebSocket(address);
socket.onopen = function (event) {
// Prepare the UI here
};
socket.onclose = function(event) {
// Reset the UI here
};
socket.onerror = function (event) {
// Display the error (event.data)
};
socket.onmessage = function (event) {
// Display the debug message (event.data)
};
}
function Stop() {
if (socket !== undefined) {
socket.close();
}
}
آدرس باید با پروتکل ws:// نشان داده شود و بایستی با IP و PORT مشخص شده در سمت ویندوز هم مطابقت داشته باشد.
با توجه به ابزار، آن حداقل رابط کاربری است. در اولین سطر اجازه می دهد تا آدرس سوکت مشخص شود، امکان شروع و توقف اتصال هم وجود دارد. در خطوط ورودی میتوانید به طور معمول به بالا و پایین حرکت کنید:
130710
زمانیکه اتصال با موفقیت انجام شود، دکمه ای اتصال (Connect) غیر فعال می شود و دکمه ای توقف (Stop) فعال می گردد. زمانیکه توقف با موفقیت انجام شود، وضعیت هردو دکمه تغییر می کند.

130712
گسترش
فایل منحصر به فرد مورد نیاز جهت گسترش در DebugConsole.htm قرار می گیرد، که شامل تمام کدهای HTML, CSS, JavaScript می باشد. این فایل می تواند در هر سروری قرار بگیرد.
از آنجایی که یک برنامه HTML5 با استفاده از WebSocket می باشد، برنامه به عنوان یک نرم افزار مستقل اجرا خواهد شد پس از آن از طریق یک مرورگر لود می شود.
به منظور تبدیل این صفحه اینترنت به یک برنامه ذخیره سازی، چندین ترفند و راهنمایی های مورد نیاز وجود دارد.
اولین گام برای ایجاد یک برنامه ای ذخیره سازی، ایجاد یک فایل بیانیه (MANIFEST) است. که حداقل محتوای آن چیزی شبیه کد زیر خواهد بود:
CACHE MANIFEST
CACHE:
DebugConsole.htm

صفحه ای وب متصل می شود با فایل مشخص شده manifest درون تگ HTML:
<html manifest="manifest_file">
این صفحه ذخیره می شود درون ماشین محلی، تا زمانیکه manifest توسط سرور تغییر کند یا ذخیره سازی محلی (Cache) به صورت دستی توسط کاربر پاک شود.
موضوع اصلی اینجاست که manifest باید پیکربندی شود با نوع MIME به صورت text/cache-manifest.
هستند بسیاری از نویسندگان که نشان می دهند برای پیکربندی سرور، این نوع MIME پرونده جدید برای فایل های خاص وجود دارد، اما گاهی اوقات ما امکان کنترل را نداریم.
راه دیگر برای انجام این وظیفه، دستکاری هدر فایل های پویای ایجاد شده manifest به صورت دستی است.
کد نمونه برای نمایش انجام این عمل با PHP می باشد، اما می توانیم با ASP هم انجام دهیم:
<?php ob_start(); header('Content-type: text/cache-manifest'); echo 'CACHE MANIFESTCACHE:DebugConsole.htm';ob_end_flush(); ?>
موضوع بعدیجزئیات آیفون